class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ret = 0;
        for(int i = 0; i < 32; i++)
        {
            int tmp = 0;
            for(int j = 0; j < nums.size(); j++)
                tmp += ((nums[j] >> i) & 1);    // 先把数组元素的 i 位全部相加

            if(tmp % 3 == 1)
                ret |= (1 << i);    // 结果为 1，就将对应的 i 位修改成 1
            else
                ret &= (~(1 << i)); // 结果为 0，就将对应的 i 位修改成 0
        }
        
        return ret;
    }
};